package com.jgjc.dao;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

@Mapper
public interface FrameMemberDao {

    //根据桥梁id和分幅类型id查询构件
    List<Map<String, Object>> getList(@Param("bridgeId") int bridgeId, @Param("sideTypeId") int sideTypeId);

    //根据桥梁id和分幅类型id查询构件数量，并按构件跨孔id分类
    List<Map<String,Object>> getCountStructs(@Param("bridgeId") int bridgeId, @Param("sideTypeId") int sideTypeId);

    //添加跨径组合信息
    int addSite(@Param("mapList") List<Map<String, Object>> mapList);

    //根据跨空编号，桥梁id，分幅类型获取跨空id
    List getIdListBySiteAndBS(@Param("siteNoList") List siteNoList, @Param("bridgeId") int bridgeId, @Param("sideTypeId") int sideTypeId);

    //根据跨空id获取对应构件信息
    List<Map<String, Object>> getListBySiteId(@Param("siteId") int siteId);

    //获取上部结构类型
    List<Map<String, Object>> getSuperstructureTypeList();

    //获取材料类型
    List<Map<String, Object>> getMaterialTypeList();

    //获取支座类型
    List<Map<String, Object>> getSupportTypeList();

    //获取桥墩类型
    List<Map<String, Object>> getPierTypeList();

    //获取桥台类型
    List<Map<String, Object>> getAbutmentTypeList();

    //获取伸缩缝类型
    List<Map<String, Object>> getExpansionJointTypeList();

    //获取桥墩页面元素信息
    List<Map<String, Object>> getListByPier();

    //获取河床页面元素信息
    List<Map<String, Object>> getListByRiverbed();

    //获取调治构造物页面元素信息
    List<Map<String, Object>> getListByRegulatingStructure();

    //获取桥面系页面元素信息
    List<Map<String, Object>> getListByDeck();

    //获取伸缩缝装置页面元素信息
    List<Map<String, Object>> getListByExpansionJoint();

    //根据上部类型结构id获取页面元素信息
    List<Map<String, Object>> getListBySuperstructure(@Param("memberDescId") int memberDescId);

    //根据桥台类型id获取页面元素信息
    List<Map<String, Object>> getListByAbutment(@Param("memberDescId") int memberDescId);

    //添加上部结构信息
    int addSuperstructure(Map<String, Object> requestMap);

    //判断是添加上部结构还是修改上部结构
    List<Map<String, Object>> isAddSuperstructure(@Param("siteNoList") List siteNoList);

    //判断是添加桥墩还是修改桥墩
    List<Map<String, Object>> isAddPier(@Param("siteNoList") List siteNoList);

    //判断是添加河床还是修改河床
    List<Map<String, Object>> isAddSiteRange(@Param("siteNoList") List siteNoList);

    //判断是添加桥台还是修改桥台
    List<Map<String, Object>> isAddAbutment(@Param("siteNoList") List siteNoList);

    //判断是添加桥面系还是修改桥面系
    List<Map<String, Object>> isAddDeck(@Param("siteNoList") List siteNoList);

    //判断是添加伸缩缝装置还是修改伸缩缝装置
    List<Map<String, Object>> isAddExpansionJoint(@Param("siteNoList") List siteNoList);

    //修改上部结构，先删除在添加
    void deleteSuperstructure(@Param("siteNoList") List siteNoList);

    //根据siteNoiD和memberDescId删除桥墩
    void deletePier(@Param("siteNoList") List siteNoList);

    //根据siteid和memberDescId删除桥台
    void deleteAbutment(@Param("siteNoList") List siteNoList);

    //根据siteid和memberDescId删除河床
    void deleteSiteRange(@Param("siteNoList") List siteNoList);

    //根据siteid和memberDescId删除河床
    void deleteRegulatingStructure(@Param("siteNoList") List siteNoList);

    //根据siteid和memberDescId删除桥面系
    void deleteDeck(@Param("siteNoList") List siteNoList);

    //根据siteid和memberDescId删除伸缩缝装置
    void deleteExpansionJoint(@Param("siteNoList") List siteNoList);

    //根据id删除构件条目信息
    int deleteStructInfoById(@Param("id") int id);

    //根据构件管理列表的id修改每一个单独的构件信息
    int edit(Map<String, Object> requestMap);

}
